package com.example.apidocserver.domain.document.event;

import com.example.apidocserver.application.dto.UserDocInfoDto;
import com.example.apidocserver.domain.document.dto.UploadMenuApiDto;
import com.example.apidocserver.domain.document.entity.ApiInfo;
import com.example.apidocserver.domain.document.entity.ApiParamHis;
import com.example.apidocserver.domain.user.entity.DocUsrHis;
import com.example.apidocserver.interfaces.vo.ApiInfoAllVo;
import com.example.apidocserver.interfaces.vo.ApiParamDescVo;

import java.util.List;

/**
 * 接口参数示例领域事件
 *
 * @author xyqlg
 */
public interface ParamHisDomainEvent {
    /**
     * 保存接口参数示例，并转换为参数说明
     *
     * @param apiParamHis 示例参数
     * @param apiInfo     接口信息
     * @return 参数说明
     */
    ApiInfoAllVo upsertParamHis(ApiParamHis apiParamHis, ApiInfo apiInfo);

    /**
     * 设置参数示例
     *
     * @param docUsrHis    用户信息
     * @param apiInfoAllVo 接口数据
     */
    void setParamHis(DocUsrHis docUsrHis, ApiInfoAllVo apiInfoAllVo);

    /**
     * 批量插入参数示例
     * 接口已存在的参数示例的不会新增，也不会转换为
     *
     * @param menuApiDto 导入解析对象
     * @return 参数说明对象集合
     */
    List<ApiParamDescVo> insertBatchForInput(UploadMenuApiDto menuApiDto);
}
